// 数组扁平化：取出嵌套数组(多维)中的所有元素放到一个新数组(一维)中


/**
 * 方法一：使用递归完成
 * @param {Array} arr 数组
 * @returns 
 */
export function flatten1(arr) {
  // 声明空数组
  let result = [];
  // 遍历数组
  arr.forEach(item => {
    // 判断当前元素是否是一个数组
    if (Array.isArray(item)) {
      result =  result.concat(flatten1(item));
    } else {
      result = result.concat(item);
    }
  });
  return result
}

/**
 * 方法一： ... + some() + concat()
 * @param {Array} arr 数组
 * @returns 
 */
export function flatten2(arr) {
  // 声明数组
  let result = [...arr];
  // 循环判断
  while (result.some(item => Array.isArray(item))) {
    // [1, 2, [3, 4, [5, 6]], 7]
    // result = [].concat(1, 2, [3, 4, [5, 6]], 7); // [1,2,3,4,[5,6],7]
    // result = [].concat([1, 2, 3, 4, [5, 6], 7]); //[1,2,3,4,5,6,7]
    result = [].concat(...result);
  }
  return result;
}


